{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# The PyBaMM Solvers\n",
    "\n",
    "PyBaMM has a few different solvers that can be used to solve the model equations. In this notebook we will go through the different solvers and contrast their features and performance.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Note: you may need to restart the kernel to use updated packages.\n"
     ]
    }
   ],
   "source": [
    "%pip install \"pybamm[plot,cite]\" -q    # install PyBaMM if it is not installed\n",
    "import time\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "import pybamm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "The solvers available in PyBaMM are:\n",
    "\n",
    "- [`pybamm.CasadiSolver`](https://docs.pybamm.org/en/stable/source/api/solvers/casadi_solver.html): This is a wrapper around the CasADi solver, which is a wrapper around the [Sundials solver suite](https://sundials.readthedocs.io/en/latest/). This has been the default solver in PyBaMM since its inception, but it will soon be replaced as the default solver by the `IDAKLUSolver` described below.\n",
    "- [`pybamm.IDAKLUSolver`](https://docs.pybamm.org/en/stable/source/api/solvers/idaklu_solver.html): This is a direct wrapper around the Sundials IDAS solver written by the PyBaMM team. This has been customised to work well with PyBaMM's models and will soon be the default solver in PyBaMM. It is often faster than the `CasadiSolver` with default model options, but the `CasadiSolver` can still be faster for some models with custom options so it is worth trying both.\n",
    "- [`pybamm.ScipySolver`](https://docs.pybamm.org/en/stable/source/api/solvers/scipy_solver.html): This is a wrapper around the `scipy.integrate.solve_ivp` solver. This is generally much slower than the other solvers and is only recommended for very simple problems or for testing.\n",
    "- [`pybamm.IDAKLUJax`](https://docs.pybamm.org/en/stable/source/api/solvers/idaklu_jax.html) (*experimental*): This is a [JAX](https://jax.readthedocs.io/en/latest/index.html) wrapper around the `pybamm.IDAKLUSolver` solver that allows it to be used within a JAX model. This is still experimental for Windows, so is only recommended for use on Linux or MacOS.\n",
    "- [`pybamm.JaxSolver`](https://docs.pybamm.org/en/stable/source/api/solvers/jax_solver.html) (*experimental*): This is a pure JAX solver that uses the `jax` library to solve the model equations instead of the Sundials solvers. This is also experimental on Windows, so is only recommended for use on Linux or MacOS.\n",
    "\n",
    "The two main solvers are the Casadi and IDAKLU solvers. Out of these two, the IDAKLU solver is generally recommended as it is faster and has more features. Historically, the Casadi solver has been the default solver in PyBaMM, but current development is focused on the IDAKLU solver and this is expected to become the default solver in the near future.\n",
    "\n",
    "## Solver features\n",
    "\n",
    "- **Speed**: The IDAKLU solver is generally faster than the Casadi solver, both for solving models and also post-processing the ouput variables. However, for some physics options the Casadi solver can be faster, so it is worth trying both.\n",
    "- **Sensitivity analysis**: The IDAKLU solver can compute forward model sensitivities with respect to input parameters. It uses the Sundials IDAS solver to compute the sensitivities. The Casadi solver can also compute sensitivities, but it is generally slower than the IDAKLU solver and not recommended for this purpose.\n",
    "- **Adjoint sensitivity analysis**: Either adjoint sensitivity analysis or reverse-mode auto differentiation is useful to compute sensitivities if the number of input parameters is very large (e.g. ML models). Currently only the pure Jax solver supports reverse mode auto differentiation, but adding adjoint sensitivity analysis to the IDAKLU solver is a future development goal.\n",
    "- **Parallelism**: If a list of input parameters are passed to the solver, the IDAKLU solver can solve the model in parallel for each parameter using multiple threads via OpenMP. This can be useful, for example for parameter sweeps. The Casadi solver can also solve models in parallel, but it uses the Python `multiprocessing` library which can be slower than OpenMP. If enough threads are available and the model is large enough, the IDAKLU solver can also parallelise a single solve using OpenMP and the Sundials NVECTOR_OPENMP implementation.\n",
    "- **GPU acceleration**: Currently only the pure Jax solver supports GPU acceleration. We have some experimental support for GPU acceleration via a new JAX-based backend for the IDAKLU solver, but this is still in development.\n",
    "- **Events**: The Casadi, IDAKLU and Scipy solvers all support events, which are used to trigger an action when a certain condition is met. The main use case for events is to stop the solver between different steps of an experiment. The pure Jax solver does not support events. The IDAKLU solver has a faster and more robust event handling than the Casadi solver, as it uses the underlying Sundials event handling.\n",
    "- **Evaluation and interpolation points**: All the solver take a list of time points to evaluate the solution (the `t_eval` argument). This stops the solver at each requested time point, slowing down the time-stepping of the solver. The IDAKLU solver can also take a list of interpolation points (the `t_interp` argument) which will interpolate the solution at these points without stopping the solver, speeding up the calculation of the solution.\n",
    "- **other features**: The Sundials solvers have many custom features that change the way the solver works (e.g. tolerances, linear solvers, minimum step sizes, etc.), you can read more about these in the [Sundials docs](https://sundials.readthedocs.io/en/latest/). Some of these are exposed in the Casadi solver (see the `extra_options` arguments to this solver), but the IDAKLU solver has generally more features exposed and documented (see the [docs](https://docs.pybamm.org/en/stable/source/api/solvers/idaklu_solver.html)). If PyBaMM does not expose a feature you need, you can always post an issue on the [GitHub page](https://github.com/pybamm-team/PyBaMM/issues) and we will try to add it.\n",
    "\n",
    "## Solver Comparison\n",
    "\n",
    "Below we will compare three of the main solvers available in PyBaMM: the Casadi, IDAKLU and Scipy solvers. We will compare the speed of the solvers for solving the SPM, SPMe and DFN models with their default options, and compare the result."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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iRMnWL58OY899hj+/v4XfP/cP467uzuvvfYaP//8M++//z7fffcdzzzzjP24xx57jNLSUtasWcNPP/3E7NmzCQgIAMBqtRITE8OSJUv45ZdfmD59OtOmTePjjz+2P/7ll19m4cKFLFiwgHXr1nHixAk+++yz+n3yItW4+eab6dSpE59++ql9n2EYvPfee/zhD3+gXbt2XHPNNSxdurTaxz/77LP85S9/4auvvuKuu+5qqLBFrlhAQAABAQEsW7aM0tLSC75vtVq59dZbWb9+Pf/+97/55ZdfmDVrFh4eHhc95759+/j444/58ssvWb58OT/88AMTJ04EoG/fviQmJvKvf/3Lfnx5eTmLFi3ij3/8Y90/wSZMOVvkN8rX4gqcNmcbYhiGYaSlpRmA8emnn9bocUuWLDFCQ0Pt2x06dDCef/75K378Y489ZowYMcK+HRkZabz00kv27fLyciMmJsYYOnSofV+/fv2Mp556qkZxilR233332V9Tlf9+vlGjRhnXXXedffu///2vERYWZpSXlxuGYRivvvqq0a9fvwvO7e3tbQBGamrqZX/++S72+n7vvfeMoKCgSz0tkRpbunSpERISYvj6+hq9evUypk6davz444+GYRjGihUrDHd3d2P37t3VPvb81+SMGTMMDw8PIysry77vm2++Mdzd3Y3s7GzDMAxj9uzZVf5PffLJJ0ZAQIBRVFRUD8+u6VLOFlehfC3yG2fM2ZrZPss477Kvi1m5ciUDBgwgOjqa5s2bc++993L8+HFOnz4NwJNPPsmLL75I7969mTFjBjt27Kjy+DfffJOuXbsSFhZGQEAAb7/9NmazGYCCggKys7MxmUz24z09PenWrVsdPUuRmjEMAzc3N/v2ggULGDVqlP2esNGjR7N+/Xr2799f5XEdO3YkPj6eGTNmVLlkU6SxGTFiBEeOHOGLL75gyJAhrFq1ihtvvJGFCxeyfft2YmJiaNu27RWfLy4ujujoaPt2z549sVqt7N69G7A1G9q3b5/9MueFCxdy9913Vzs7KxennC1SlfK1uAJnzNkqts9KSkrCzc3tkg1VDh48yO23307Hjh355JNPSE9P58033wSgrKwMgAcffJCMjAzuvfdefvrpJ7p168brr78OwOLFi/nTn/7EAw88wH//+1+2b9/O+PHj7Y8VaWx27dpFQkICgP3yyLfeegtPT088PT2Jjo6moqKCBQsWVHlcdHQ0q1at4vDhwwwZMoRTp05d8c8MDAy03y9TWX5+PkFBQbV7QiLV8PX1ZdCgQTz33HNs2LCB+++/nxkzZtRLI5VWrVpxxx138N5775Gbm8s333yjS8ivgnK2SFXK1+IqnC1nq9g+q0WLFgwePJg333yT4uLiC76fn59Peno6VquVl19+mR49etC2bVuOHDlywbGxsbE88sgjfPrppzz99NO88847AKxfv55evXoxceJEunTpwjXXXFPlE8agoCAiIyNJS0uz76uoqCA9Pb0enrHIpX333Xf89NNPjBgxAoBFixYRExPDjz/+yPbt2+1f5+5ZtFgsVR7funVrVq9eTU5OTo0S+LXXXsu2bdsu2L9t27YafVopcrWuv/56iouL6dixI1lZWTVaKsRsNlfJC5s2bcLd3Z1rr73Wvu/BBx/ko48+4u2336ZNmzb07t27TuN3BcrZIr9RvhZX1thztortSt58800sFgvJycl88skn7N27l127dvHaa6/Rs2dPrrnmGsrLy3n99dfJyMjgX//6F/PmzatyjkmTJrFixQoOHDjAtm3b+P7777nuuusA2yfxW7duZcWKFezZs4fnnnvugnUPn3rqKWbNmsWyZcv49ddfmThxIvn5+Q01BOKiSktLycnJ4fDhw2zbto2//vWvDB06lNtvv51x48YB8M9//pORI0fSvn37Kl8PPPAAeXl5LF++/ILzxsbGsmrVKo4ePcrgwYMpLCy0f6+goKDKm4Dt27dz6NAhHn30Ufbs2cOTTz7Jjh072L17N6+88goffvghTz/9dIONiTR9x48f5+abb+bf//43O3bs4MCBAyxZsoSXXnqJoUOH0q9fP/r27cuIESP49ttvOXDgAN988021r/VzfH19ue+++/jxxx9Zu3YtTz75JHfffTcRERH2YwYPHkxgYCAvvviiuv7WgnK2uCLla3FVTpuzr/jubhdx5MgR47HHHjNat25teHt7G9HR0cadd95pfP/994ZhGMYrr7xiREZGGn5+fsbgwYONDz74wACMkydPGoZhGI8//rjRpk0bw8fHxwgLCzPuvfdeIy8vzzAMwygpKTHuv/9+IygoyAgODjYeffRRY8qUKUanTp3sP7+8vNx46qmnjMDAQCM4ONiYPHmyMW7cODVbkTp1fsMVwAAMT09PIywszBg4cKCxYMECw2KxGIZhGFu3bjUAY/PmzdWe79ZbbzXuuuuuC859TlZWlpGUlGT06NHDKCgoqPIzK3898MADhmEYxubNm41BgwYZYWFhRlBQkGEymYzPPvusXsZCXFdJSYkxZcoU48YbbzSCgoKMZs2aGddee63x5z//2Th9+rRhGIZx/PhxY/z48UZoaKjh6+trtG/f3vjqq68Mw6i+2UqnTp2Mt956y4iKijJ8fX2NkSNHGidOnLjgZz/33HOGh4eHceTIkQZ5rk2VcrY0dcrXIjbOmrPdDOMKu4yIiIjIRT3//PMsW7aM7du3X/bYBx54gGPHjvHFF1/Uf2AiIiJSRUPlbM+riE1ERESuQkFBAT/99BMpKSkqtEVERBqxusjZKrZFREQayNChQ9m8eTOPPPIIgwYNcnQ4IiIichF1kbN1GbmIiIiIiIhIHVM3chEREREREZE6pmJbREREREREpI6p2BYRERERERGpYyq2RUREREREROqYim0RERERERGROqZiW0RERERERKSOqdgWERERERERqWMqtkVERERERETqmIptERERERERkTr2/wOhbDlGXIXhOAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "first_solve_time = np.zeros((3, 3))\n",
    "second_solve_time = np.zeros((3, 3))\n",
    "for i, model_cls in enumerate(\n",
    "    [pybamm.lithium_ion.SPM, pybamm.lithium_ion.SPMe, pybamm.lithium_ion.DFN]\n",
    "):\n",
    "    for j, solver_cls in enumerate(\n",
    "        [pybamm.CasadiSolver, pybamm.IDAKLUSolver, pybamm.ScipySolver]\n",
    "    ):\n",
    "        if solver_cls == pybamm.ScipySolver and model_cls == pybamm.lithium_ion.DFN:\n",
    "            first_solve_time[i, j] = np.nan\n",
    "            second_solve_time[i, j] = np.nan\n",
    "            continue\n",
    "        sim = pybamm.Simulation(model_cls(), solver=solver_cls())\n",
    "        start_time = time.perf_counter()\n",
    "        sol = sim.solve([0, 3600])\n",
    "        voltage = sol[\"Terminal voltage [V]\"](0)\n",
    "        end_time = time.perf_counter()\n",
    "        first_solve_time[i, j] = end_time - start_time\n",
    "        start_time = time.perf_counter()\n",
    "        sol = sim.solve([0, 3600])\n",
    "        voltage = sol[\"Terminal voltage [V]\"](0)\n",
    "        end_time = time.perf_counter()\n",
    "        second_solve_time[i, j] = end_time - start_time\n",
    "\n",
    "\n",
    "fig, ax = plt.subplots(1, 2, figsize=(10, 5))\n",
    "for i, model_cls in enumerate(\n",
    "    [pybamm.lithium_ion.SPM, pybamm.lithium_ion.SPMe, pybamm.lithium_ion.DFN]\n",
    "):\n",
    "    ax[0].plot(first_solve_time[i, :], label=model_cls.__name__)\n",
    "    ax[1].plot(second_solve_time[i, :], label=model_cls.__name__)\n",
    "ax[0].set_xticks(np.arange(3))\n",
    "ax[0].set_xticklabels([\"Casadi\", \"IDAKLU\", \"Scipy\"])\n",
    "ax[0].set_ylabel(\"Time (s)\")\n",
    "ax[0].set_title(\"First solve time\")\n",
    "ax[0].legend()\n",
    "ax[1].set_xticks(np.arange(3))\n",
    "ax[1].set_xticklabels([\"Casadi\", \"IDAKLU\", \"Scipy\"])\n",
    "ax[1].set_ylabel(\"Time (s)\")\n",
    "ax[1].set_title(\"Second solve time\")\n",
    "ax[1].legend()\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The \"First solve time\" plot includes the setup time for the solver, which for this relatively small problem is significant. For SPM and DFN the IDAKLU solver is the fastest of the three, but for the SPMe the setup time required for IDAKLU makes this the slowest of the three.\n",
    "\n",
    "The \"Second solve time\" plot excludes this setup time and is a clearer indication of the relative speed of the solvers for (a) calculating a solution and (b) post-processing the solution to extract the voltage. For all three models, the IDAKLU solver is the fastest of the three.\n",
    "\n",
    "The Scipy solver is much slower than the other two solvers as it is a Python solver and not optimised for speed. Both the Casadi and IDAKLU solvers use the same Sundials solvers under the hood, but the IDAKLU solver is generally faster as it has been customised to work well with PyBaMM's models. The IDAKLU solver also has improved online (via `t_eval`) or post-processing interpolation features, so obtaining output variables can often be faster than the Casadi solver."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "env",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
